library(leaflet)
library(tidyverse)
library(rgdal)
library(stringr)
#Link to Community Areas Shape File:
#https://data.cityofchicago.org/Facilities-Geographic-Boundaries/Boundaries-Community-Areas-current-/cauq-8yn6 
#Link to Nieghborhoods Shape File:
#https://data.cityofchicago.org/Facilities-Geographic-Boundaries/Boundaries-Neighborhoods/9wp7-iasj
#Link to libraries data set
#https://data.cityofchicago.org/Education/Libraries-Locations-Hours-and-Contact-Information/x8fc-8rcq/data
#Census Tracts:
#https://data.cityofchicago.org/Facilities-Geographic-Boundaries/Boundaries-Census-Tracts-2010/5jrd-6zik
#We want to seperate out these latitudes and longitudes to make it easier to use
clean_location <- function(location) {
  
  cleaned <- stringr::str_replace(location, '\\(' ,"") 
  cleaned <-stringr::str_replace(cleaned, "\\)","")
  #print(cleaned)
  return(cleaned)
}
libraries$LOCATION<-sapply(libraries$LOCATION, clean_location)
libraries <-separate(libraries, LOCATION, c("lat","long"),",")
libraries$lat <- as.numeric(libraries$lat)
libraries$long <- as.numeric(libraries$long)
glimpse(libraries)
Observations: 80
Variables: 12
$ NAME                     <chr> "Albany Park", "Altgeld", "Archer Heights", "Austin", "Austin-I...
$ `HOURS OF OPERATION`     <chr> "M, W: 10AM-6PM;  TU, TH: 12PM-8PM; F, SA: 9AM-5PM; SU: Closed"...
$ CYBERNAVIGATOR           <chr> "Yes", "Yes", "No", "Yes", "No", "Yes", "No", "No", "No", "Yes"...
$ `TEACHER IN THE LIBRARY` <chr> "Yes", "Yes", "Yes", "Yes", "Yes", "Yes", "Yes", "Yes", "Yes", ...
$ ADDRESS                  <chr> "3401 W. Foster Avenue", "13281 S. Corliss Avenue", "5055 S. Ar...
$ CITY                     <chr> "CHICAGO", "CHICAGO", "CHICAGO", "CHICAGO", "CHICAGO", "CHICAGO...
$ STATE                    <chr> "IL", "IL", "IL", "IL", "IL", "IL", "IL", "IL", "IL", "IL", "IL...
$ ZIP                      <int> 60625, 60827, 60632, 60644, 60634, 60617, 60609, 60643, 60640, ...
$ PHONE                    <chr> "(773) 539-5450", "(312) 747-3270", "(312) 747-9241", "(312) 74...
$ WEBSITE                  <chr> "https://www.chipublib.org/locations/3/", "https://www.chipubli...
$ lat                      <dbl> 41.97546, 41.65473, 41.80121, 41.88927, 41.95317, 41.74672, 41....
$ long                     <dbl> -87.71409, -87.60223, -87.72649, -87.76571, -87.77939, -87.5854...

addPolygons(color = “#444444”, weight = 1, smoothFactor = 0.5, opacity = 1.0, fillOpacity = 0.5, fillColor = ~colorQuantile(“YlOrRd”, ALAND)(ALAND), highlightOptions = highlightOptions(color = “white”, weight = 2, bringToFront = TRUE))

#Chicago Lat Long 41.881832, -87.623177.
m <- leaflet() %>%
  addTiles() %>%
  #addProviderTiles(providers$OpenMapSurfer.Grayscale) %>%
  setView(lng =  -87.623177, 
          lat =41.881832,
          zoom = 10) %>%
  addMarkers(~long,
             ~lat,
             popup = ~NAME,
             data = libraries,
             group = "Libraries")%>%
  addPolygons(data = community_areas, 
            weight = 1,
            fillColor = "green",
            fillOpacity = .25,
            label = ~community,
            group = "Community Areas") %>%
  addPolygons(data = census_tracts,
              group = 'Census Tracts',
              label = ~geoid10,
              fillColor = "red",
              fillOpacity = .25,
              weight = 1)%>%
  addLayersControl(overlayGroups = c("Community Areas",
                                     "Libraries",
                                     "Census Tracts"))
m

sprintf(“ %s: : %s”, parent_name, lettergrade)

label <- sprintf("<strong>%s</strong>:
                  <br> %s <br>--------
                  <br> %s 
                  <br> %s 
                  <br> %s, %s
                  <br>--------
                  <br> %s 
                  <br> 
                  <a href = %s>website<a>",
                 libraries$NAME,
                 libraries$`HOURS OF OPERATION`,
                 libraries$ADDRESS,
                 libraries$CITY,
                 libraries$STATE,
                 libraries$ZIP,
                 libraries$PHONE,
                 libraries$WEBSITE)
?sprintf
m2 <- leaflet() %>%
  addTiles() %>%
  #addProviderTiles(providers$OpenMapSurfer.Grayscale) %>%
  setView(lng =  -87.623177, 
          lat =41.881832,
          zoom = 10) %>%
  addMarkers(~long,
             ~lat,
             popup = label,
             data = libraries,
             group = "Libraries")%>%
  addPolygons(data = community_areas, 
            weight = 1,
            fillColor = "green",
            fillOpacity = .25,
            label = ~community,
            group = "Community Areas") %>%
  addPolygons(data = census_tracts,
              group = 'Census Tracts',
              label = ~geoid10,
              fillColor = "red",
              fillOpacity = .25,
              weight = 1)%>%
  addLayersControl(overlayGroups = c("Community Areas",
                                     "Libraries",
                                     "Census Tracts"))
m2
LS0tCnRpdGxlOiAiTGVhZmxldCBNYXAiCm91dHB1dDogaHRtbF9ub3RlYm9vawotLS0KCmBgYHtyIGxpYnJhcmllc30KbGlicmFyeShsZWFmbGV0KQpsaWJyYXJ5KHRpZHl2ZXJzZSkKbGlicmFyeShyZ2RhbCkKbGlicmFyeShzdHJpbmdyKQojTGluayB0byBDb21tdW5pdHkgQXJlYXMgU2hhcGUgRmlsZToKI2h0dHBzOi8vZGF0YS5jaXR5b2ZjaGljYWdvLm9yZy9GYWNpbGl0aWVzLUdlb2dyYXBoaWMtQm91bmRhcmllcy9Cb3VuZGFyaWVzLUNvbW11bml0eS1BcmVhcy1jdXJyZW50LS9jYXVxLTh5bjYgCgojTGluayB0byBOaWVnaGJvcmhvb2RzIFNoYXBlIEZpbGU6CiNodHRwczovL2RhdGEuY2l0eW9mY2hpY2Fnby5vcmcvRmFjaWxpdGllcy1HZW9ncmFwaGljLUJvdW5kYXJpZXMvQm91bmRhcmllcy1OZWlnaGJvcmhvb2RzLzl3cDctaWFzagoKI0xpbmsgdG8gbGlicmFyaWVzIGRhdGEgc2V0CiNodHRwczovL2RhdGEuY2l0eW9mY2hpY2Fnby5vcmcvRWR1Y2F0aW9uL0xpYnJhcmllcy1Mb2NhdGlvbnMtSG91cnMtYW5kLUNvbnRhY3QtSW5mb3JtYXRpb24veDhmYy04cmNxL2RhdGEKCiNDZW5zdXMgVHJhY3RzOgojaHR0cHM6Ly9kYXRhLmNpdHlvZmNoaWNhZ28ub3JnL0ZhY2lsaXRpZXMtR2VvZ3JhcGhpYy1Cb3VuZGFyaWVzL0JvdW5kYXJpZXMtQ2Vuc3VzLVRyYWN0cy0yMDEwLzVqcmQtNnppawpgYGAKCmBgYHtyIGRhdGEsIGluY2x1ZGU9RkFMU0V9CgojU2hhcGUgZmlsZSBmb3IgY29tbXVuaXR5IGFyZWFzIApjb21tdW5pdHlfYXJlYXMgPC0gIHJnZGFsOjpyZWFkT0dSKCJDb21tdW5pdHlfQXJlYXMvZ2VvX2V4cG9ydF82NGY1NjRmOS1iYmIwLTQ4OTMtOWMwNC0yYmQ4NDBmMTFlMzkuc2hwIikKCiNTaGFwZSBmaWxlIGZvciBuaWVnaGJvcmhvZHMKbmVpZ2hib3Job29kcyA8LXJnZGFsOjpyZWFkT0dSKCJOZWlnaGJvcmhvb2RzL05laWdoYm9yaG9vZHNfMjAxMmIuc2hwIikKCiNTaGFwZSBmaWxlIGZvciBjZW5zdXMgdHJhY3RzOgpjZW5zdXNfdHJhY3RzIDwtcmdkYWw6OnJlYWRPR1IoIkNlbnN1c19UcmFjdHMvZ2VvX2V4cG9ydF82OTFjOThlYi02MzQ5LTQyZGYtOWYyMi03YmQ1ZmRlMjAzYzMuc2hwIikKCiNQb2ludHMgb2YgaW50ZXJlc3Q6CmxpYnJhcmllcyA8LSByZWFkX2NzdigiUE9JL0xpYnJhcmllcy5jc3YiKQoKZ2xpbXBzZShsaWJyYXJpZXMpCiNWaWV3KGNvbW11bml0eV9hcmVhcykKYGBgCgoKYGBge3IgY2xlYW5fcG9pfQojV2Ugd2FudCB0byBzZXBlcmF0ZSBvdXQgdGhlc2UgbGF0aXR1ZGVzIGFuZCBsb25naXR1ZGVzIHRvIG1ha2UgaXQgZWFzaWVyIHRvIHVzZQoKY2xlYW5fbG9jYXRpb24gPC0gZnVuY3Rpb24obG9jYXRpb24pIHsKICAKICBjbGVhbmVkIDwtIHN0cmluZ3I6OnN0cl9yZXBsYWNlKGxvY2F0aW9uLCAnXFwoJyAsIiIpIAogIGNsZWFuZWQgPC1zdHJpbmdyOjpzdHJfcmVwbGFjZShjbGVhbmVkLCAiXFwpIiwiIikKICAjcHJpbnQoY2xlYW5lZCkKICByZXR1cm4oY2xlYW5lZCkKfQoKbGlicmFyaWVzJExPQ0FUSU9OPC1zYXBwbHkobGlicmFyaWVzJExPQ0FUSU9OLCBjbGVhbl9sb2NhdGlvbikKbGlicmFyaWVzIDwtc2VwYXJhdGUobGlicmFyaWVzLCBMT0NBVElPTiwgYygibGF0IiwibG9uZyIpLCIsIikKbGlicmFyaWVzJGxhdCA8LSBhcy5udW1lcmljKGxpYnJhcmllcyRsYXQpCmxpYnJhcmllcyRsb25nIDwtIGFzLm51bWVyaWMobGlicmFyaWVzJGxvbmcpCgpnbGltcHNlKGxpYnJhcmllcykKYGBgCgphZGRQb2x5Z29ucyhjb2xvciA9ICIjNDQ0NDQ0Iiwgd2VpZ2h0ID0gMSwgc21vb3RoRmFjdG9yID0gMC41LAogICAgb3BhY2l0eSA9IDEuMCwgZmlsbE9wYWNpdHkgPSAwLjUsCiAgICBmaWxsQ29sb3IgPSB+Y29sb3JRdWFudGlsZSgiWWxPclJkIiwgQUxBTkQpKEFMQU5EKSwKICAgIGhpZ2hsaWdodE9wdGlvbnMgPSBoaWdobGlnaHRPcHRpb25zKGNvbG9yID0gIndoaXRlIiwgd2VpZ2h0ID0gMiwKICAgICAgYnJpbmdUb0Zyb250ID0gVFJVRSkpCgpgYGB7ciBtYXB9CiNDaGljYWdvIExhdCBMb25nIDQxLjg4MTgzMiwgLTg3LjYyMzE3Ny4KbSA8LSBsZWFmbGV0KCkgJT4lCiAgYWRkVGlsZXMoKSAlPiUKICAjYWRkUHJvdmlkZXJUaWxlcyhwcm92aWRlcnMkT3Blbk1hcFN1cmZlci5HcmF5c2NhbGUpICU+JQogIHNldFZpZXcobG5nID0gIC04Ny42MjMxNzcsIAogICAgICAgICAgbGF0ID00MS44ODE4MzIsCiAgICAgICAgICB6b29tID0gMTApICU+JQogIGFkZE1hcmtlcnMofmxvbmcsCiAgICAgICAgICAgICB+bGF0LAogICAgICAgICAgICAgcG9wdXAgPSB+TkFNRSwKICAgICAgICAgICAgIGRhdGEgPSBsaWJyYXJpZXMsCiAgICAgICAgICAgICBncm91cCA9ICJMaWJyYXJpZXMiKSU+JQogIGFkZFBvbHlnb25zKGRhdGEgPSBjb21tdW5pdHlfYXJlYXMsIAogICAgICAgICAgICB3ZWlnaHQgPSAxLAogICAgICAgICAgICBmaWxsQ29sb3IgPSAiZ3JlZW4iLAogICAgICAgICAgICBmaWxsT3BhY2l0eSA9IC4yNSwKICAgICAgICAgICAgbGFiZWwgPSB+Y29tbXVuaXR5LAogICAgICAgICAgICBncm91cCA9ICJDb21tdW5pdHkgQXJlYXMiKSAlPiUKICBhZGRQb2x5Z29ucyhkYXRhID0gY2Vuc3VzX3RyYWN0cywKICAgICAgICAgICAgICBncm91cCA9ICdDZW5zdXMgVHJhY3RzJywKICAgICAgICAgICAgICBsYWJlbCA9IH5nZW9pZDEwLAogICAgICAgICAgICAgIGZpbGxDb2xvciA9ICJyZWQiLAogICAgICAgICAgICAgIGZpbGxPcGFjaXR5ID0gLjI1LAogICAgICAgICAgICAgIHdlaWdodCA9IDEpJT4lCiAgYWRkTGF5ZXJzQ29udHJvbChvdmVybGF5R3JvdXBzID0gYygiQ29tbXVuaXR5IEFyZWFzIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJMaWJyYXJpZXMiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkNlbnN1cyBUcmFjdHMiKSkKbQpgYGAKCnNwcmludGYoIjxzdHJvbmc+PHU+ICVzOiA8L3N0cm9uZz48L3U+OiAlcyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgcGFyZW50X25hbWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0dGVyZ3JhZGUpCgpgYGB7cn0KCgoKCmxhYmVsIDwtIHNwcmludGYoIjxzdHJvbmc+JXM8L3N0cm9uZz46CiAgICAgICAgICAgICAgICAgIDxicj4gJXMgPGJyPi0tLS0tLS0tCiAgICAgICAgICAgICAgICAgIDxicj4gJXMgCiAgICAgICAgICAgICAgICAgIDxicj4gJXMgCiAgICAgICAgICAgICAgICAgIDxicj4gJXMsICVzCiAgICAgICAgICAgICAgICAgIDxicj4tLS0tLS0tLQogICAgICAgICAgICAgICAgICA8YnI+ICVzIAogICAgICAgICAgICAgICAgICA8YnI+IAogICAgICAgICAgICAgICAgICA8YSBocmVmID0gJXM+d2Vic2l0ZTxhPiIsCiAgICAgICAgICAgICAgICAgbGlicmFyaWVzJE5BTUUsCiAgICAgICAgICAgICAgICAgbGlicmFyaWVzJGBIT1VSUyBPRiBPUEVSQVRJT05gLAogICAgICAgICAgICAgICAgIGxpYnJhcmllcyRBRERSRVNTLAogICAgICAgICAgICAgICAgIGxpYnJhcmllcyRDSVRZLAogICAgICAgICAgICAgICAgIGxpYnJhcmllcyRTVEFURSwKICAgICAgICAgICAgICAgICBsaWJyYXJpZXMkWklQLAogICAgICAgICAgICAgICAgIGxpYnJhcmllcyRQSE9ORSwKICAgICAgICAgICAgICAgICBsaWJyYXJpZXMkV0VCU0lURSkKCj9zcHJpbnRmCgptMiA8LSBsZWFmbGV0KCkgJT4lCiAgYWRkVGlsZXMoKSAlPiUKICAjYWRkUHJvdmlkZXJUaWxlcyhwcm92aWRlcnMkT3Blbk1hcFN1cmZlci5HcmF5c2NhbGUpICU+JQogIHNldFZpZXcobG5nID0gIC04Ny42MjMxNzcsIAogICAgICAgICAgbGF0ID00MS44ODE4MzIsCiAgICAgICAgICB6b29tID0gMTApICU+JQogIGFkZE1hcmtlcnMofmxvbmcsCiAgICAgICAgICAgICB+bGF0LAogICAgICAgICAgICAgcG9wdXAgPSBsYWJlbCwKICAgICAgICAgICAgIGRhdGEgPSBsaWJyYXJpZXMsCiAgICAgICAgICAgICBncm91cCA9ICJMaWJyYXJpZXMiKSU+JQogIGFkZFBvbHlnb25zKGRhdGEgPSBjb21tdW5pdHlfYXJlYXMsIAogICAgICAgICAgICB3ZWlnaHQgPSAxLAogICAgICAgICAgICBmaWxsQ29sb3IgPSAiZ3JlZW4iLAogICAgICAgICAgICBmaWxsT3BhY2l0eSA9IC4yNSwKICAgICAgICAgICAgbGFiZWwgPSB+Y29tbXVuaXR5LAogICAgICAgICAgICBncm91cCA9ICJDb21tdW5pdHkgQXJlYXMiKSAlPiUKICBhZGRQb2x5Z29ucyhkYXRhID0gY2Vuc3VzX3RyYWN0cywKICAgICAgICAgICAgICBncm91cCA9ICdDZW5zdXMgVHJhY3RzJywKICAgICAgICAgICAgICBsYWJlbCA9IH5nZW9pZDEwLAogICAgICAgICAgICAgIGZpbGxDb2xvciA9ICJyZWQiLAogICAgICAgICAgICAgIGZpbGxPcGFjaXR5ID0gLjI1LAogICAgICAgICAgICAgIHdlaWdodCA9IDEpJT4lCiAgYWRkTGF5ZXJzQ29udHJvbChvdmVybGF5R3JvdXBzID0gYygiQ29tbXVuaXR5IEFyZWFzIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJMaWJyYXJpZXMiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkNlbnN1cyBUcmFjdHMiKSkKbTIKCmBgYAoK